/*
 * Copyright (C) 2008 Derek James and Philip Tucker
 * 
 * This file is part of ANJI (Another NEAT Java Implementation).
 * 
 * ANJI is free software; you can redistribute it and/or modify it under the
 * terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 2 of the License, or (at your option) any later
 * version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place, Suite 330, Boston, MA 02111-1307 USA
 * 
 * created by Philip Tucker
 */
package com.anji.dilemma;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import com.anji.tournament.Player;

/**
 * <code>Player</code> that determines choices by input from stdin.
 * @author Philip Tucker
 */
public class HumanPlayer extends MemoryDilemmaPlayer {

  private String playerId = "Human Player";

  /**
   * @see Player#getPlayerId()
   */
  public String getPlayerId() {
    return playerId;
  }

  /**
   * @see com.anji.tournament.Player#reset()
   */
  public void reset() {
    // no-op
  }

  /**
   * @see java.lang.Object#toString()
   */
  public String toString() {
    return playerId;
  }

  /**
   * Prompt for console input and translate to choice.
   */
  public Choice chooseImpl(Choice opponentPreviousChoice) {
    try {
      System.out.println("Defect? [Y] ");
      BufferedReader console = new BufferedReader(new InputStreamReader(
          System.in));
      String consoleInput = console.readLine();
      if (consoleInput == null || consoleInput.charAt(0) == 'y'
          || consoleInput.charAt(0) == 'Y') {
        return Choice.DEFECT;
      }
      return Choice.COOPERATE;
    } catch (Exception e) {
      throw new IllegalStateException(e);
    }
  }

}
